<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>UML图分类 | whoway</title>
    <meta name="description" content="Personal Blog Website">
    <link rel="icon" href="/images/photo.jpg">
  <link rel="manifest" href="/images/photo.jpg">
  <link rel="apple-touch-icon" href="/images/photo.jpg">
  <meta http-quiv="pragma" cotent="no-cache">
  <meta http-quiv="pragma" cotent="no-cache,must-revalidate">
  <meta http-quiv="expires" cotent="0">
    
    <link rel="preload" href="/assets/css/0.styles.0dbae9ec.css" as="style"><link rel="preload" href="/assets/js/app.c70e21ad.js" as="script"><link rel="preload" href="/assets/js/85.fe2b7de9.js" as="script"><link rel="prefetch" href="/assets/js/10.15222a53.js"><link rel="prefetch" href="/assets/js/100.7e0e5a86.js"><link rel="prefetch" href="/assets/js/101.efd59f25.js"><link rel="prefetch" href="/assets/js/102.dfbdc06c.js"><link rel="prefetch" href="/assets/js/103.d3ab2109.js"><link rel="prefetch" href="/assets/js/104.117957ef.js"><link rel="prefetch" href="/assets/js/105.046e8ff3.js"><link rel="prefetch" href="/assets/js/106.aebdc17d.js"><link rel="prefetch" href="/assets/js/107.248733c2.js"><link rel="prefetch" href="/assets/js/108.a2fecadc.js"><link rel="prefetch" href="/assets/js/109.35196857.js"><link rel="prefetch" href="/assets/js/11.770642f2.js"><link rel="prefetch" href="/assets/js/110.cf3d973c.js"><link rel="prefetch" href="/assets/js/111.f985889a.js"><link rel="prefetch" href="/assets/js/112.ad614f41.js"><link rel="prefetch" href="/assets/js/113.f666653c.js"><link rel="prefetch" href="/assets/js/114.c6c3f384.js"><link rel="prefetch" href="/assets/js/115.e51d3c2f.js"><link rel="prefetch" href="/assets/js/116.4f4b39f5.js"><link rel="prefetch" href="/assets/js/117.99352e11.js"><link rel="prefetch" href="/assets/js/118.c6ae6572.js"><link rel="prefetch" href="/assets/js/119.4ccbe778.js"><link rel="prefetch" href="/assets/js/12.042a92ff.js"><link rel="prefetch" href="/assets/js/120.edda1c4f.js"><link rel="prefetch" href="/assets/js/121.30a638ed.js"><link rel="prefetch" href="/assets/js/122.6efcefb1.js"><link rel="prefetch" href="/assets/js/123.91e6665b.js"><link rel="prefetch" href="/assets/js/124.f27e3d7e.js"><link rel="prefetch" href="/assets/js/125.c75712d5.js"><link rel="prefetch" href="/assets/js/126.ed756cce.js"><link rel="prefetch" href="/assets/js/127.2f06c74c.js"><link rel="prefetch" href="/assets/js/128.d5f6f30e.js"><link rel="prefetch" href="/assets/js/129.508b7eed.js"><link rel="prefetch" href="/assets/js/13.b5280c37.js"><link rel="prefetch" href="/assets/js/130.dc05f9aa.js"><link rel="prefetch" href="/assets/js/131.e0ba69b1.js"><link rel="prefetch" href="/assets/js/132.d79bcaa4.js"><link rel="prefetch" href="/assets/js/133.34acc01a.js"><link rel="prefetch" href="/assets/js/134.dabf64d5.js"><link rel="prefetch" href="/assets/js/135.ad90c915.js"><link rel="prefetch" href="/assets/js/136.dbb0074f.js"><link rel="prefetch" href="/assets/js/137.284ad365.js"><link rel="prefetch" href="/assets/js/138.a4b6856f.js"><link rel="prefetch" href="/assets/js/139.c9c1e20f.js"><link rel="prefetch" href="/assets/js/14.df02ba38.js"><link rel="prefetch" href="/assets/js/140.8b0a9269.js"><link rel="prefetch" href="/assets/js/141.9c7759c5.js"><link rel="prefetch" href="/assets/js/142.a4201a82.js"><link rel="prefetch" href="/assets/js/143.d7da6e8c.js"><link rel="prefetch" href="/assets/js/144.5e48e65d.js"><link rel="prefetch" href="/assets/js/145.a0e2633c.js"><link rel="prefetch" href="/assets/js/146.3c775f9b.js"><link rel="prefetch" href="/assets/js/147.22add89a.js"><link rel="prefetch" href="/assets/js/148.cfde1009.js"><link rel="prefetch" href="/assets/js/149.ffc835b5.js"><link rel="prefetch" href="/assets/js/15.fbdfc4ee.js"><link rel="prefetch" href="/assets/js/150.406c4b20.js"><link rel="prefetch" href="/assets/js/151.b2040eea.js"><link rel="prefetch" href="/assets/js/152.7bc65661.js"><link rel="prefetch" href="/assets/js/153.1d7c65e3.js"><link rel="prefetch" href="/assets/js/154.1309de49.js"><link rel="prefetch" href="/assets/js/155.81d3ee1f.js"><link rel="prefetch" href="/assets/js/156.154a4ef2.js"><link rel="prefetch" href="/assets/js/16.e5eb6147.js"><link rel="prefetch" href="/assets/js/17.57853c4a.js"><link rel="prefetch" href="/assets/js/18.cb9d7518.js"><link rel="prefetch" href="/assets/js/19.f354dc47.js"><link rel="prefetch" href="/assets/js/2.570d8a23.js"><link rel="prefetch" href="/assets/js/20.b5af7fad.js"><link rel="prefetch" href="/assets/js/21.0b1928fe.js"><link rel="prefetch" href="/assets/js/22.f78666de.js"><link rel="prefetch" href="/assets/js/23.29c3f366.js"><link rel="prefetch" href="/assets/js/24.6f596516.js"><link rel="prefetch" href="/assets/js/25.14067b60.js"><link rel="prefetch" href="/assets/js/26.74ba4989.js"><link rel="prefetch" href="/assets/js/27.13d60edd.js"><link rel="prefetch" href="/assets/js/28.9523cb32.js"><link rel="prefetch" href="/assets/js/29.8ec842e9.js"><link rel="prefetch" href="/assets/js/3.3fb3d2e0.js"><link rel="prefetch" href="/assets/js/30.805597a8.js"><link rel="prefetch" href="/assets/js/31.831b195d.js"><link rel="prefetch" href="/assets/js/32.063c672d.js"><link rel="prefetch" href="/assets/js/33.6d93fac3.js"><link rel="prefetch" href="/assets/js/34.56e8263c.js"><link rel="prefetch" href="/assets/js/35.dbe688bb.js"><link rel="prefetch" href="/assets/js/36.dc5af2c1.js"><link rel="prefetch" href="/assets/js/37.0a7494f6.js"><link rel="prefetch" href="/assets/js/38.fe4fc171.js"><link rel="prefetch" href="/assets/js/39.f5ed5e92.js"><link rel="prefetch" href="/assets/js/4.2c405ec8.js"><link rel="prefetch" href="/assets/js/40.fe7e2714.js"><link rel="prefetch" href="/assets/js/41.30b0811d.js"><link rel="prefetch" href="/assets/js/42.76f52d62.js"><link rel="prefetch" href="/assets/js/43.e7bb0817.js"><link rel="prefetch" href="/assets/js/44.ead0e883.js"><link rel="prefetch" href="/assets/js/45.235df046.js"><link rel="prefetch" href="/assets/js/46.5f09e829.js"><link rel="prefetch" href="/assets/js/47.67116354.js"><link rel="prefetch" href="/assets/js/48.31f34543.js"><link rel="prefetch" href="/assets/js/49.10b5ebba.js"><link rel="prefetch" href="/assets/js/5.6f47322c.js"><link rel="prefetch" href="/assets/js/50.c0f0b7f1.js"><link rel="prefetch" href="/assets/js/51.5143f3bf.js"><link rel="prefetch" href="/assets/js/52.eeddfd48.js"><link rel="prefetch" href="/assets/js/53.eb790db5.js"><link rel="prefetch" href="/assets/js/54.8fe5421c.js"><link rel="prefetch" href="/assets/js/55.d8f9004b.js"><link rel="prefetch" href="/assets/js/56.62ac9b92.js"><link rel="prefetch" href="/assets/js/57.a9caec0d.js"><link rel="prefetch" href="/assets/js/58.f93fc522.js"><link rel="prefetch" href="/assets/js/59.a81a03aa.js"><link rel="prefetch" href="/assets/js/6.8c2ea393.js"><link rel="prefetch" href="/assets/js/60.ab782775.js"><link rel="prefetch" href="/assets/js/61.6dd12daf.js"><link rel="prefetch" href="/assets/js/62.76f4b01f.js"><link rel="prefetch" href="/assets/js/63.6f8a4742.js"><link rel="prefetch" href="/assets/js/64.6f8bb1fa.js"><link rel="prefetch" href="/assets/js/65.4120a44b.js"><link rel="prefetch" href="/assets/js/66.360c2d2b.js"><link rel="prefetch" href="/assets/js/67.26f84d32.js"><link rel="prefetch" href="/assets/js/68.68f45e5e.js"><link rel="prefetch" href="/assets/js/69.e311eb56.js"><link rel="prefetch" href="/assets/js/7.6762b2d7.js"><link rel="prefetch" href="/assets/js/70.cea82674.js"><link rel="prefetch" href="/assets/js/71.783ddcf7.js"><link rel="prefetch" href="/assets/js/72.e5467385.js"><link rel="prefetch" href="/assets/js/73.b8fb681b.js"><link rel="prefetch" href="/assets/js/74.1bae37db.js"><link rel="prefetch" href="/assets/js/75.024387e5.js"><link rel="prefetch" href="/assets/js/76.a8e53010.js"><link rel="prefetch" href="/assets/js/77.8c55500a.js"><link rel="prefetch" href="/assets/js/78.7ce90bf5.js"><link rel="prefetch" href="/assets/js/79.ef71713f.js"><link rel="prefetch" href="/assets/js/8.788a6364.js"><link rel="prefetch" href="/assets/js/80.acad589d.js"><link rel="prefetch" href="/assets/js/81.02670d10.js"><link rel="prefetch" href="/assets/js/82.53b7b1ac.js"><link rel="prefetch" href="/assets/js/83.99eb8581.js"><link rel="prefetch" href="/assets/js/84.d1535ce3.js"><link rel="prefetch" href="/assets/js/86.41850272.js"><link rel="prefetch" href="/assets/js/87.1cdc6df9.js"><link rel="prefetch" href="/assets/js/88.01bf3461.js"><link rel="prefetch" href="/assets/js/89.17c69819.js"><link rel="prefetch" href="/assets/js/9.3813842d.js"><link rel="prefetch" href="/assets/js/90.f6ae7e35.js"><link rel="prefetch" href="/assets/js/91.507bc284.js"><link rel="prefetch" href="/assets/js/92.90551782.js"><link rel="prefetch" href="/assets/js/93.dc442d78.js"><link rel="prefetch" href="/assets/js/94.315f4e94.js"><link rel="prefetch" href="/assets/js/95.ccd6c6bf.js"><link rel="prefetch" href="/assets/js/96.0c6d89d0.js"><link rel="prefetch" href="/assets/js/97.1a9f10a9.js"><link rel="prefetch" href="/assets/js/98.43be3caa.js"><link rel="prefetch" href="/assets/js/99.54c8207b.js">
    <link rel="stylesheet" href="/assets/css/0.styles.0dbae9ec.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">whoway</span></a> <div class="links" style="max-width:nullpx;"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">🎓Coding</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/00.Coding/TheBeautyOfProgramming/" class="nav-link">🔖编程之美题解</a></li><li class="dropdown-item"><!----> <a href="/00.Coding/CodeWarehouse/" class="nav-link">🔖代码意识流</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">🚀语言</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/01.Language/Overview/" class="nav-link">🔖概述</a></li><li class="dropdown-item"><!----> <a href="/01.Language/C/" class="nav-link">⭐️C</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Cpp/" class="nav-link">🚀C++</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Java/" class="nav-link">☕️Java</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Python/" class="nav-link">🧩Python3</a></li></ul></div></div><div class="nav-item"><a href="/02.Hardware/" class="nav-link">✔️硬件基础</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">⭐️软件基础</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/03.Software/01.DataStructureAndAlgorithm/" class="nav-link">🐾数据结构和算法</a></li><li class="dropdown-item"><!----> <a href="/03.Software/02.OS/" class="nav-link">💻操作系统</a></li><li class="dropdown-item"><!----> <a href="/03.Software/03.Net/" class="nav-link">☁️计算机网络</a></li><li class="dropdown-item"><!----> <a href="/03.Software/04.SE/" class="nav-link router-link-active">✅软件工程</a></li></ul></div></div><div class="nav-item"><a href="/04.Database/" class="nav-link">🎨数据库</a></div><div class="nav-item"><a href="/05.Engineer/" class="nav-link">🔖学术/工程</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">⚙️工具</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/06.Tools/01.employment/" class="nav-link">🔖求职</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/02.efficiency/" class="nav-link">🚀效能</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/03.windows/" class="nav-link">⚙️Windows</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/04.design/" class="nav-link">🧩设计</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/05.linux/" class="nav-link">🐉Linux</a></li></ul></div></div><div class="nav-item"><a href="https://github.com/whoway" target="_blank" rel="noopener noreferrer" class="nav-link external">
  GitHub
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar"><nav class="nav-links"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">🎓Coding</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/00.Coding/TheBeautyOfProgramming/" class="nav-link">🔖编程之美题解</a></li><li class="dropdown-item"><!----> <a href="/00.Coding/CodeWarehouse/" class="nav-link">🔖代码意识流</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">🚀语言</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/01.Language/Overview/" class="nav-link">🔖概述</a></li><li class="dropdown-item"><!----> <a href="/01.Language/C/" class="nav-link">⭐️C</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Cpp/" class="nav-link">🚀C++</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Java/" class="nav-link">☕️Java</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Python/" class="nav-link">🧩Python3</a></li></ul></div></div><div class="nav-item"><a href="/02.Hardware/" class="nav-link">✔️硬件基础</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">⭐️软件基础</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/03.Software/01.DataStructureAndAlgorithm/" class="nav-link">🐾数据结构和算法</a></li><li class="dropdown-item"><!----> <a href="/03.Software/02.OS/" class="nav-link">💻操作系统</a></li><li class="dropdown-item"><!----> <a href="/03.Software/03.Net/" class="nav-link">☁️计算机网络</a></li><li class="dropdown-item"><!----> <a href="/03.Software/04.SE/" class="nav-link router-link-active">✅软件工程</a></li></ul></div></div><div class="nav-item"><a href="/04.Database/" class="nav-link">🎨数据库</a></div><div class="nav-item"><a href="/05.Engineer/" class="nav-link">🔖学术/工程</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">⚙️工具</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/06.Tools/01.employment/" class="nav-link">🔖求职</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/02.efficiency/" class="nav-link">🚀效能</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/03.windows/" class="nav-link">⚙️Windows</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/04.design/" class="nav-link">🧩设计</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/05.linux/" class="nav-link">🐉Linux</a></li></ul></div></div><div class="nav-item"><a href="https://github.com/whoway" target="_blank" rel="noopener noreferrer" class="nav-link external">
  GitHub
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav>  <ul class="sidebar-links"><li><div class="sidebar-group first"><p class="sidebar-heading open"><span>UML图分类</span> <!----></p> <ul class="sidebar-group-items"><li><a href="/03.Software/04.SE/02.UML.html#_01-uml图分类" class="sidebar-link">01.UML图分类</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/03.Software/04.SE/02.UML.html#_02-uml图的重要性" class="sidebar-link">02.UML图的重要性</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/03.Software/04.SE/02.UML.html#_03-uml图中关系分类（4种和细分）" class="sidebar-link">03.UML图中关系分类（4种和细分）</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/03.Software/04.SE/02.UML.html#（1）泛化关系" class="sidebar-link">（1）泛化关系</a></li><li class="sidebar-sub-header"><a href="/03.Software/04.SE/02.UML.html#（2）实现关系" class="sidebar-link">（2）实现关系</a></li><li class="sidebar-sub-header"><a href="/03.Software/04.SE/02.UML.html#（3）依赖关系" class="sidebar-link">（3）依赖关系</a></li><li class="sidebar-sub-header"><a href="/03.Software/04.SE/02.UML.html#（4）关联关系" class="sidebar-link">（4）关联关系</a></li></ul></li><li><a href="/03.Software/04.SE/02.UML.html#_04-软件准备" class="sidebar-link">04.软件准备</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/03.Software/04.SE/02.UML.html#_4-1-“聚合”和“组合”的区别是什么？" class="sidebar-link">4.1.“聚合”和“组合”的区别是什么？</a></li></ul></li><li><a href="/03.Software/04.SE/02.UML.html#✅静态模型图" class="sidebar-link">✅静态模型图</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/03.Software/04.SE/02.UML.html#_01-用例图（★★★）" class="sidebar-link">01.用例图（★★★）</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/03.Software/04.SE/02.UML.html#_02-类图（★★★★★）" class="sidebar-link">02.类图（★★★★★）</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/03.Software/04.SE/02.UML.html#✅动态模型图" class="sidebar-link">✅动态模型图</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/03.Software/04.SE/02.UML.html#_01-用例图（★★★）-2" class="sidebar-link">01.用例图（★★★）</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/03.Software/04.SE/02.UML.html#_1、用途：" class="sidebar-link">1、用途：</a></li><li class="sidebar-sub-header"><a href="/03.Software/04.SE/02.UML.html#_2、组件" class="sidebar-link">2、组件</a></li><li class="sidebar-sub-header"><a href="/03.Software/04.SE/02.UML.html#_3、用例之间关系" class="sidebar-link">3、用例之间关系</a></li></ul></li><li><a href="/03.Software/04.SE/02.UML.html#_02-时序图" class="sidebar-link">02.时序图</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/03.Software/04.SE/02.UML.html#_03-活动图" class="sidebar-link">03.活动图</a><ul class="sidebar-sub-headers"></ul></li></ul></div></li></ul> </div> <div class="page"> <div class="content"><h1 id="uml图分类"><a href="#uml图分类" class="header-anchor">#</a> UML图分类</h1> <div class="language-txt line-numbers-mode"><pre class="language-text"><code>UML系列文章（一）
2020-07-01  



summary: 静态模型图（类图，部署图等）
2021.08.26.
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h2 id="_01-uml图分类"><a href="#_01-uml图分类" class="header-anchor">#</a> 01.UML图分类</h2> <ul><li>静态模型图</li></ul> <blockquote><ul><li>类图（★★★★★）</li> <li>对象图</li> <li>包图</li> <li>组件图</li> <li>部署图（★★☆）</li></ul></blockquote> <ul><li>动态模型图</li></ul> <blockquote><ul><li>用例图（★★★）</li> <li>时序图（★★★★）</li> <li>协作图</li> <li>状态图</li> <li>活动图</li></ul></blockquote> <p>动态模型图：
比如说，有多少个人登录这个系统，有多少个人维护这个系统。</p> <h2 id="_02-uml图的重要性"><a href="#_02-uml图的重要性" class="header-anchor">#</a> 02.UML图的重要性</h2> <blockquote><ul><li>1）其中，类图是学习<b>设计模式</b>的两个重要的东西之一，另外就是语言层面的<b>“多态”</b>，还有就是UML中的<b>“关系”</b>。</li></ul></blockquote> <ul><li><b>（因为设计模式的很多类图是用UML的类图来表达的。）</b></li></ul> <blockquote><ul><li>2）UML图的，时序图什么的，其实我也可以用于平时作技术交流或者PPT中插图，并不一定仅仅用于项目建模。</li></ul></blockquote> <h2 id="_03-uml图中关系分类（4种和细分）"><a href="#_03-uml图中关系分类（4种和细分）" class="header-anchor">#</a> 03.UML图中关系分类（4种和细分）</h2> <p>UML中的关系主要包括4种:</p> <ul><li>1）泛化关系（generalization）:代码层次实现：<b>继承</b>&gt;</li> <li>2）实现关系（realization）：代码层次实现：C++可以用<b>纯虚函数</b>和<b>抽象类</b>来模拟一个接口</li> <li>3）依赖关系（dependency）:代码层次实现：“一个类是另一个类”的<b>函数参数</b>或<b>函数返回值</b>实现</li></ul> <blockquote><ul><li>包含关系（<code>&lt;&lt;include&gt;&gt;</code>）</li> <li>扩展关系（<code>&lt;&lt;extend&gt;&gt;</code>）</li></ul></blockquote> <ul><li>4）关联关系（association）:代码层面是用“一个类是另外一个类”的<font size="4"><b>成员变量</b></font></li></ul> <blockquote><ul><li>一般关联</li> <li>聚合</li> <li>组合</li></ul></blockquote> <ul><li>注意：关系逐渐加强。一般关联--&gt;聚合--&gt;组合</li></ul> <h3 id="（1）泛化关系"><a href="#（1）泛化关系" class="header-anchor">#</a> （1）泛化关系</h3> <ul><li>意义：在 UML 中, 泛化关系用来表示<font size="4"><b>类</b></font>与<font size="4"><b>类</b></font>, <font size="4"><b>接口</b></font>与<font size="4"><b>接口</b></font>之间的继承关系. 泛化关系有时也称为”is a kind of”关系</li> <li>图形：在 UML 中泛化关系用一条<strong>实线，空心箭头</strong>从子类指向父类</li></ul> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.01.png" alt="2021.08.26.01"></p> <h3 id="（2）实现关系"><a href="#（2）实现关系" class="header-anchor">#</a> （2）实现关系</h3> <ul><li>意义：在 UML 中, 实现关系用来表示<font size="4"><b>类</b></font>与<font size="4"><b>接口</b></font>之间的实现关系.</li> <li>图形：在 UML 中实现关系用一条<strong>虚线，空心箭头</strong>由子类指向父类</li></ul> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.02.png" alt="2021.08.26.02"></p> <p>PS:实现关系，在C++语言里面没有接口这个概念，Java中有。
但是C++可以用纯虚函数和抽象类来模拟一个接口。
纯虚函数的类是抽象类。可以用抽象类弄成接口类，就这么干。</p> <h3 id="（3）依赖关系"><a href="#（3）依赖关系" class="header-anchor">#</a> （3）依赖关系</h3> <p>对于两个相对独立的系统，当一个系统负责构造另一个系统的实例，或者依赖另一个系统的服务时，这两个系统之间体现为依赖关系.
例如生产零件的机器和零件，机器负责构造零件对象;充电电池和充电器，充电电池通过充电器来充电;自行车Bicycle和打气筒Pump，自行车通过打气筒来充气</p> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.03.png" alt="2021.08.26.03"></p> <h4 id="依赖关系之包含"><a href="#依赖关系之包含" class="header-anchor">#</a> 依赖关系之包含</h4> <ul><li>一个用例可以包含其他用例具有的行为, 并把它包含的用例行为作为自身行为的一部分.</li> <li>图形：在 UML 中包含关系用<strong>虚线箭头</strong>加 “<code>&lt;&lt;include&gt;&gt;</code>”,箭头指向<font size="4"><b>被包含</b></font>的用例</li></ul> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.04.png" alt="2021.08.26.04"></p> <h4 id="依赖关系之扩展"><a href="#依赖关系之扩展" class="header-anchor">#</a> 依赖关系之扩展</h4> <ul><li>如果在完成某个功能的时候偶尔会执行另外一个功能, 则用扩展关系表示.</li> <li>图形：在 UML 中扩展关系用<strong>虚线箭头</strong>加 “<code>&lt;&lt;extend&gt;&gt;</code>”, 箭头指向<font size="4"><b>被扩展</b></font>的用例</li></ul> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.05.png" alt="2021.08.26.05"></p> <p>说明：在保存成绩的时候，只有发现学生考试没有及格，<font size="4"><b>才需要</b></font>扩展到“打印补考通知单”。（偶尔，毕竟并不总是需要打印补考通知单）</p> <h3 id="（4）关联关系"><a href="#（4）关联关系" class="header-anchor">#</a> （4）关联关系</h3> <p>关于依赖是虚线，关联是实现的对比</p> <ul><li>根据虚线和实线，或许可以这么记忆？
不是自己的车，这种<strong>依赖</strong>别人永远是虚的。是自己买的车，和自己<strong>关联</strong>紧密的才是实的。</li></ul> <h4 id="_1、一般关联（实线）"><a href="#_1、一般关联（实线）" class="header-anchor">#</a> 1、一般关联（实线）</h4> <p>张三这次开车上班，车是自己的。</p> <ul><li>关联关系是类与类之间的联结，它使一个类知道另一个类的属性和方法 ，关联可以是双向的，也可以是单向的。</li> <li><font size="4"><b>双向的关联可以有两个箭头或者没有箭头，单向的关联有一个箭头。</b></font></li> <li>在 Java和C++ 中，关联关系是通过使用成员变量来实现的。 如人与车</li> <li>关联：一个类是另一个类的成员变量。</li></ul> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.006.png" alt="2021.08.26.006"></p> <p>代码</p> <div class="language-cpp line-numbers-mode"><pre class="language-cpp"><code><span class="token keyword">class</span> <span class="token class-name">Car</span>
<span class="token punctuation">{</span>
	<span class="token comment">///...</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>

<span class="token keyword">class</span> <span class="token class-name">Person</span>
<span class="token punctuation">{</span>
	Car <span class="token operator">*</span> mycar<span class="token punctuation">;</span><span class="token comment">//自己有的</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h4 id="_2、聚合（空心菱形-实线）"><a href="#_2、聚合（空心菱形-实线）" class="header-anchor">#</a> 2、聚合（空心菱形+实线）</h4> <p>也是属于关联，只不过是车和人之间的关系会更加紧密一些而已，</p> <ul><li>聚合是<strong>整体</strong>和<strong>部分</strong>之间的关系，例如汽车由引擎、轮胎以及其它零件组成。</li></ul> <p>聚合关系也是通过成员变量来实现的。</p> <p>对比：
关联关系所涉及的两个类处在同一个层次上
而聚合关系中，两个类处于不同的层次上，一个代表整体，一个代表部分。</p> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.07.png" alt="2021.08.26.07"></p> <h4 id="_3、组合（实心菱形-实线）"><a href="#_3、组合（实心菱形-实线）" class="header-anchor">#</a> 3、组合（实心菱形+实线）</h4> <p>聚合和组合的区别：
有无生命的区别。生命中的整体和部分
比如,公司和部门，公司不存在了，则部门也没有了。要是部门不存在类，公司也没有存在的意义。</p> <ul><li>代表整体的对象负责代表部分对象的生命周期（重点理解！！！）</li></ul> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.08.png" alt="2021.08.26.08"></p> <p><font><b>Tips</b></font>:由于各大UML对这个的支持不同，也可能图片会画成下面这样</p> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.08_2.0.png" alt="2021.08.26.08_2.0"></p> <p><font size="5"><b>总结：</b></font>
对于聚合和组合的UML图，那个箭头，我们可以省略也可以不省略，其实，我们主要关注菱形！！！
这是最奇葩的，菱形是放在尾巴的。</p> <h4 id="关联关系的多重性（软考考）"><a href="#关联关系的多重性（软考考）" class="header-anchor">#</a> 关联关系的多重性（软考考）</h4> <p>关联还有一个数量问题</p> <ul><li>关联关系的多重性是指有多少对象可以参与该关联, 多重性可以用来表达一个取值范围, 特定值, 无限定的范围.</li></ul> <p><img src="https://cdn.jsdelivr.net/gh/HACV/picture/img/2021.08.26.number.png" alt="2021.08.26.number"></p> <blockquote><ul><li>在UML中，多重性可以用下面的格式表示：
0..1
0..<em>（也可以表示为0..n）
1（1..1的简写）
1..</em>（也可以表示为1..n）
*（即0..n）
7
3,6..9
0（0..0的简写）（表示没有实例参与关联，一般不用）
可以看到，多重性是用非负整数的一个子集来表示的。</li></ul></blockquote> <p>比如这样表示，一个人可以有1,2,3...n辆车</p> <p>举例：
前面聚合的例子：
一个车站可以有1个引擎，4个轮胎</p> <h2 id="_04-软件准备"><a href="#_04-软件准备" class="header-anchor">#</a> 04.软件准备</h2> <p>1）博客中UML图都将使用<code>Start UML</code>进行编辑
2）此外，我还常用<code>VS2012的建模工具</code>，里面也有一些常用UML图，详情<a href="https://jingyan.baidu.com/article/5d6edee2c9dd2b99ebdeec55.html" target="_blank" rel="noopener noreferrer">可见<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>
3）当然，还有Rose软件
Java的话，IEDA还会自动生成类图等</p> <h3 id="_4-1-“聚合”和“组合”的区别是什么？"><a href="#_4-1-“聚合”和“组合”的区别是什么？" class="header-anchor">#</a> 4.1.“聚合”和“组合”的区别是什么？</h3> <p>组合和聚合是有很大区别的，这个区别不是在形式上，而是在本质上：</p> <p>比如zhiA类中包含B类的一个dao引用b，当A类的一个对象消亡时，b这个引用所指向的对象也同时消亡（没有任何一个引用指向它，成了垃圾对象），这种情况叫做组合，反之b所指向的对象还会有另外的引用指向它，这种情况叫聚合。</p> <p>在实际写代码时组合方式一般会这样写：
A类的构造方法里创建B类的对象，也就是说，当A类的一个对象产生时，B类的对象随之产生，当A类的这个对象消亡时，它所包含的B类的对象也随之消亡。
聚合方式则是这样：
A类的对象在创建时不会立即创建B类的对象，而是等待一个外界的对象传给它
传给它的这个对象不是A类创建的。</p> <p>现实生活中：
人和人和手，脚是组合关系，因为当人死亡后人的手也就不复存在了。人和他的电脑是聚合关系。 class Hand{ } class Computer{ }</p> <p>组合： class Person{ private Hand hand; public Person(){ hand = new Hand(); } }</p> <p>聚合： class Person{ private Computer computer; public setComputer(){ computer = new Computer(); } }</p> <p>PS:个人觉得人和手那样设计不好
问：人和他的电脑不是依赖关系吗？
答：要看你是从那个角度设计的吧，都有可能</p> <h2 id="✅静态模型图"><a href="#✅静态模型图" class="header-anchor">#</a> ✅静态模型图</h2> <h2 id="_01-用例图（★★★）"><a href="#_01-用例图（★★★）" class="header-anchor">#</a> 01.用例图（★★★）</h2> <p>用例图：
画出来的，要是画出来之后给别人看，没有很大的歧义就算是可以了。</p> <p>没有板上钉钉的事情，没有错误之分，只是更加合适一点。</p> <h2 id="_02-类图（★★★★★）"><a href="#_02-类图（★★★★★）" class="header-anchor">#</a> 02.类图（★★★★★）</h2> <p>类是类图的主要组件, 由 3 部分组成: 类名, 属性和方法. 在 UML 中, 类用矩形来表示,</p> <ul><li>顶端部分存放类的名称</li> <li>中间部分存放类的属性, 属性的类型及值</li> <li>底部部分存放类的方法, 方法的参数和返回类型</li></ul> <p>在 UML 中可以根据实际情况有选择的隐藏属性部分或方法部分或两者都隐藏</p> <ul><li>在 UML 中, 公用public类型有 + 表示, 私有private类型用 – 表示, protect保护类型用 # 表示.</li> <li>UML 的工具开发商可以使用自己定义的符号表示不同的可见性</li></ul> <p>UML系列文章（二）
2020-07-02<br>
动态模型图（用例图，时序图等）</p> <h2 id="✅动态模型图"><a href="#✅动态模型图" class="header-anchor">#</a> ✅动态模型图</h2> <h2 id="_01-用例图（★★★）-2"><a href="#_01-用例图（★★★）-2" class="header-anchor">#</a> 01.用例图（★★★）</h2> <h3 id="_1、用途："><a href="#_1、用途：" class="header-anchor">#</a> 1、用途：</h3> <p>用例图(Use Case Diagram): 也称为用户模型图, 是从软件<strong>需求分析</strong>到最终实现的第一步, 它是从客户的角度来描述系统功能。
所以是
1）站在客户如何使用系统的角度，把整个软件系统描述出来。
2）就是把客户的需求给固定下来。
3）画的图能进行交流就好了，仁者见仁智者见智的过程，并不要求每个人画的用例图完全一样。</p> <h3 id="_2、组件"><a href="#_2、组件" class="header-anchor">#</a> 2、组件</h3> <p>参与者(Actor)
用例(Use Case):
代码层面，用例，你就把它想象成是一个简单的功能模块就好了。
关系</p> <h3 id="_3、用例之间关系"><a href="#_3、用例之间关系" class="header-anchor">#</a> 3、用例之间关系</h3> <ul><li>1）泛化：<font style="background:yellow;">代码层次是用“继承”</font>（C++或Java）</li> <li>2）依赖：<font style="background:yellow;">代码层面是用，“一个类是另一个类”的<strong>函数参数</strong>或<strong>函数返回值</strong>实现</font></li></ul> <blockquote><ul><li><strong>包含</strong>:一个用例可以包含其他用例具有的行为，也就是说，<strong>这个功能模块要使用另一个功能模块</strong>。
eg.教学管理系统，添加学生信息（用例）要使用更新数据库（用例）这个功能模块。</li> <li><strong>扩展</strong>：完成某个功能的时候<strong>偶尔</strong>会执行另外一个功能, 则用扩展关系表示。
eg.比如，在保存成绩的时候，发现，这个学生没有考试及格，以前的做法，就需要补考，就需要扩展到打印补考通知单。（偶尔）</li></ul></blockquote> <h2 id="_02-时序图"><a href="#_02-时序图" class="header-anchor">#</a> 02.时序图</h2> <h2 id="_03-活动图"><a href="#_03-活动图" class="header-anchor">#</a> 03.活动图</h2></div> <div class="page-edit"><!----> <!----></div> <!----> </div> <!----></div></div>
    <script src="/assets/js/app.c70e21ad.js" defer></script><script src="/assets/js/85.fe2b7de9.js" defer></script>
  </body>
</html>
